package com.csun.cmny.provider.dao;

import com.csun.cmny.provider.dto.MonthlyCountQueryDto;
import com.csun.cmny.provider.model.vo.OldSelfDataNewVo;
import com.csun.cmny.provider.vo.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author chenzheng
 * @description: 统计分析Mapper
 * @date 2019/9/4
 */
public interface OmcStatisticsMapper {
    /**
     * 通过年 月获取当前月份老人人数
     * @param year 年
     * @param month 月
     * @param groupId 机构ID
     * @return
     */
    Integer getOldmanCountByYearAndMonth(@Param("year") Integer year, @Param("month") Integer month, @Param("groupId") Long groupId);
    /**
     * 通过年 月获取当前月份之前老人总数
     * @param year 年
     * @param month 月
     * @param groupId 机构ID
     * @return
     */
    Integer getAllOldmanCountByYearAndMonth(@Param("year") Integer year, @Param("month") Integer month, @Param("groupId") Long groupId);
    /**
     * 通过年 月获取当前月份去世总人数
     * @param year 年
     * @param month 月
     * @param groupId 机构ID
     * @return
     */
    Integer getDeadOldmanCountByYearAndCount(@Param("year") Integer year, @Param("month") Integer month, @Param("groupId") Long groupId);

    /**
     * 通过年 月 楼栋id 房间id 获取当月入住的床位数
     * @param year 年
     * @param month 月
     * @param buildingId 楼楼栋D
     * @param floorNo 楼层
     * @return
     */
    Integer getBedCountByBuildingIdAndFloorNo(@Param("year") Integer year, @Param("month") Integer month, @Param("buildingId") Integer buildingId, @Param("floorNo") Integer floorNo);

    /**
     * 获取当前楼栋的层数
     * @param buildingId 楼栋ID
     * @return
     */
    List<Integer> getAllFloorNoByBuildingId(@Param("buildingId") Integer buildingId);

    /**
     * 查询机构月份入院老人
     * @param groupId
     * @param date
     * @return
     */
    Integer selectByDate(@Param("groupId") Long groupId,@Param("date") String date);

    /**
     * 老人年龄统计
     * @param groupId
     * @return
     */
    List<Integer> oldAgeStatistics(@Param("groupId") Long groupId);

    /**
     * 根据机构ID和人员类别ID统计老人数量
     * @param groupId
     * @param userTypeId
     * @return
     */
    Integer oldTypeStatistics(@Param("groupId") Long groupId,@Param("userTypeId") Long userTypeId);

    /**
     * 老人类型统计 -- 失能状态统计
     *
     * @param groupId
     * @return
     */
    OldSelfDataVo oldManTypeStatistics(@Param("groupId") Long groupId);

    /**
     * 老人性别统计
     * @param groupId
     * @return
     */
    OldSexDataVo oldManSexStatistics(@Param("groupId") Long groupId);

    /**
     * 入院月度汇总统计 通过年月查询
     * @param monthlyCountQueryDto
     * @return
     */
    List<OldManSummaryVo> selectByInOldMan(MonthlyCountQueryDto monthlyCountQueryDto);

    /**
     * 出院月度汇总统计,通过月份查询
     * @param monthlyCountQueryDto
     * @return
     */
    List<OldManSummaryVo> selectByOutOldMan( MonthlyCountQueryDto monthlyCountQueryDto);

    /**
     * 调房调级月度汇总统计,通过月份查询
     * @param monthlyCountQueryDto
     * @return
     */
    List<OldManSummaryVo> selectByUpdateOldMan(MonthlyCountQueryDto monthlyCountQueryDto);

    /**
     * 通过年 月 获取当月入院,出院,调房调级人数
     * @return
     * @param map
     */
    OldManMonthCountVo selectByMonthCount(Map map);

    /**
     * 按月查询过生日老人信息
     * @return
     * @param
     */
    List<OldManVo> listOldmanByBirthMonth(@Param("month") String month, @Param("groupId") Long groupId);

    List<OldSelfDataNewVo> newOldManTypeStatistics(Long groupId);
}
